home *** CD-ROM | disk | FTP | other *** search
- /*
- Programmes externes de Sphinx : grid .
-
- Ce programme recoit 3 images de sphinx (une dans chaque banc). Sur
- chaque image, une grille de points est tracee (epaisseur 4 pixels,
- pas 64 pixels). Les images resultats sont renvoyees a Sphinx.
-
-
- Compilation des sous programmes externes
-
- cc -c extlib.c extsemaphore.c
- f77 -c extsubdrop.f
-
- sur DEC SUN et SG
- cc -c UNDER_SGSUN.c
-
- ar r extlib.a *.o
-
- Pour compiler ce programme sur RS600 :
- cc grid.c -o grid.out extlib.a -lxlf -lm -lg
-
- Pour compiler ce programme sur DecStation :
- cc grid.c -o grid.out extlib.a -lF77 -lI77 -lU77 -lfor -lUfor \
- -lots -lutil -lm -li
-
- Pour compiler ce programme sur HP400 :
- cc grid.c -o grid.out extlib.a -lddhil -lsb1 -lsb2 -lI77 -lF77 \
- -ln -lm -lc
-
- Pour compiler ce programme sur HP700 :
- cc grid.c -o grid.out extlib.a -lm -lcl
-
- Pour compiler ce programme sur HP800 :
- cc grid.c -o grid.out extlib.a -lddhil -lsb1 -lsb2 -lcl -lnlsstubs \
- -lisamstubs -ln -lm
-
- Pour compiler ce programme sur Sun :
- cc grid.c -o grid.out extlib.a -lF77 -lm
-
- Pour compiler ce programme sur Silicon :
- cc grid.c -o grid.out extlib.a -lbsd -lfgl -lgl -lm -lF77 -lI77 \
- -lU77 -lisam -lm -lmpc
-
- Pour que ce programme soit connu de Sphinx, ajouter au fichier
- [directory de sphinx] /files/wind_file_EXT deux lignes :
- [directory de rangement du binaire ]/grid.out
- Grille. (ligne de commentaire)
-
-
- */
- static void traiter_image();
-
- main(argc,argv)
- int argc;
- char * argv [];
- {
- char message [140];
- int size, sizex, sizey, redr, greenr, bluer;
- unsigned char *image_red, *image_green, *image_blue;
-
-
- /* Lecture des parametres transmis par Sphinx (Note: sizex = sizey)*/
-
- sphinx_get_para (&sizex,&sizey,&redr,&greenr,&bluer,argv[1],
- message,strlen(argv[1]),strlen(message));
-
- printf("taille de l'image en lecture: %d %d\n",sizex,sizey);
- printf("plans en lecture: %d %d %d\n",redr,greenr,bluer);
- printf("zone message: %s\n",message);
-
- /* Allocation memoire pour les images */
-
- size = sizex * sizey;
- image_red = (unsigned char *) malloc(size);
- image_blue = (unsigned char *) malloc(size);
- image_green = (unsigned char *) malloc(size);
-
- /* Lecture des images transmises par Sphinx (une par plan) */
-
- sphinx_read(argv[1],image_red,image_green,image_blue
- ,strlen(argv[1]),size,size,size);
-
- /* Traitement de l'image dans chaque banc */
-
- traiter_image(image_blue,sizex);
- traiter_image(image_red,sizex);
- traiter_image(image_green,sizex);
-
- /* Retour des images vers Sphinx */
-
- sphinx_write(argv[1],image_red,image_green,image_blue
- ,strlen(argv[1]),size,size,size);
- }
-
- /* La fonction de traitement d'une image */
-
- static void draw_grid();
-
- static void traiter_image(image,size)
- unsigned char * image;
- int size;
- {
- /* Tracer une grille de largeur 4 pixels par pas de 64 pixels */
- int step = 64;
- int width = 4;
- draw_grid(image,size,step,width);
- }
-
- /* Tracer une grille de largeur width pixels par pas de step pixels sur
- une image situee a l'adresse image et de taille size */
-
- static void draw_grid_line();
-
- static void draw_grid(image,size,step,width)
- unsigned char * image;
- int size, step, width;
- {
- int i, k, line;
- for (i = 0; i < size; i+= step)
- {
- for (k = 0; k < width; k++)
- {
- if ((line = (i + k)) >= size) break;
- draw_grid_line(image,size,step,width,line);
- }
- }
- }
-
- static void draw_grid_line(image,size,step,width,line)
- unsigned char * image;
- int size, step, width, line;
- {
- int j, k;
- unsigned char * p_line, * p_pixel;
- p_line = image + (line * size);
- for (j = 0; j < size; j+= step)
- {
- p_pixel = p_line + j;
- for (k = 0; k < width; k++)
- {
- if ((j + k) >= size) break;
- *p_pixel++ = 255;
- }
- }
- }
-
-
-